home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Shared library initialization code.
- **
- ** This code calls the MetroWerks shared-library initialization code
- ** and performs one extra step: it remembers the FSSpec of the file
- ** we are loaded from, so we can later call PyMac_AddLibResources to
- ** add the file to our resource file chain.
- **
- ** This file is needed for PythonCore and for any dynamically loaded
- ** module that has interesting resources in its .slb file.
- ** Use by replacing __initialize in the "CFM preferences" init field
- ** by __initialize_with_resources.
- */
-
- #include <Quickdraw.h>
- #include <SegLoad.h>
- #include <FragLoad.h>
- #include <Files.h>
- #include <Resources.h>
-
-
- /*
- ** Variables passed from shared lib initialization to PyMac_AddLibResources.
- */
- static int library_fss_valid;
- static FSSpec library_fss;
-
- /*
- ** Routine called upon fragment load. We attempt to save the FSSpec from which we're
- ** loaded. We always return noErr (we just continue without the resources).
- */
- OSErr pascal
- __initialize_with_resources(InitBlockPtr data)
- {
- /* Call the MW runtime's initialization routine */
- /* #ifdef __CFM68K__ */
- #if 1
- __initialize();
- #else
- __sinit();
- #endif
-
- if ( data == nil ) return noErr;
- if ( data->fragLocator.where == kOnDiskFlat ) {
- library_fss = *data->fragLocator.u.onDisk.fileSpec;
- library_fss_valid = 1;
- } else if ( data->fragLocator.where == kOnDiskSegmented ) {
- library_fss = *data->fragLocator.u.inSegs.fileSpec;
- library_fss_valid = 1;
- }
- return noErr;
- }
-
- /*
- ** Insert the library resources into the search path. Put them after
- ** the resources from the application (which we assume is the current
- ** resource file). Again, we ignore errors.
- */
- void
- PyMac_AddLibResources()
- {
- if ( !library_fss_valid )
- return;
- (void)FSpOpenResFile(&library_fss, fsRdPerm);
- }
-
-